package com.bdqn.factory;

import com.bdqn.dao.NewsDao;
import com.bdqn.dao.impl.NewsDaoImpl;
import com.bdqn.dao.impl.NewsDaoMySQLImpl;
import com.bdqn.dao.impl.NewsDaoOracleImpl;
import com.bdqn.dao.impl.NewsDaoSQLServerImpl;

/**
 * 工厂模式，专门生产DAO对象实例
 *
 * @author LILIBO
 * @since 2021-10-08
 */
public class SimpleDaoFactory {

    /**
     * 简单工厂，专门创建NewsDao实例的工厂（很多实现类时，不能灵活处理）
     *
     * @return
     */
    public static NewsDao getInstance() {
        // 只能固定创建一种对象的实例
        return new NewsDaoOracleImpl();
    }

    /**
     * 简单工厂，专门创建NewsDao实例的工厂（可以根据参数决定使用什么实例对象）
     *
     * @return
     */
    public static NewsDao getInstance(String dbName) {
        switch (dbName) {
            case "MySQL" :
                return new NewsDaoMySQLImpl();
            case "Oracle" :
                return new NewsDaoOracleImpl();
            case "SQLServer" :
                return new NewsDaoSQLServerImpl();
            default:
                return new NewsDaoImpl();
        }
    }
}
